package integer;

/**
 * java有8个基本类型，它们是以"值"的形式存在，而非对象。这在面向对象变成中有诸多不变，因为他们
 * 没有面向对象特性。
 * 为了解决这个问题，java定义了8个包装类，他们的出现可以让基本类型以“对象”形式呈现。
 * 其中:
 * int的包装类为:Integer.
 * char的包装类为:Character.
 * 其他的都是首字母大写。
 * 包装类也所处在java.lang包下，是常用的基础类
 */
public class IntegerDemo1 {
    public static void main(String[] args) {
        //基本类型->包装类
        int i = 128;
//        Integer i1 = new Integer(i);
//        Integer i2 = new Integer(i);
        /*
            java推荐使用静态方法valueOf将基本类型转换为包装类。
            Integer的valueOf会重用部分对象，在整数(-128-127)之间的
         */
        Integer i1 = Integer.valueOf(i);
        Integer i2 = Integer.valueOf(i);
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i1==i2);


        double dou = 123.123;
        Double d1 = Double.valueOf(dou);
        Double d2 = Double.valueOf(dou);
        System.out.println(d1);
        System.out.println(d2);
        System.out.println(d1==d2);

        /*
            数字类型的6个包装类都支持:
            intValue(),byteValue(),shorValue(),longValue(),floatValue(),doubleValue()
            包装类可以将其保存的数字转换为其他类型的数字
         */
        //从包装类中获取保存的基本类型值
        int in = i1.intValue();
        System.out.println(in);
        byte b = i1.byteValue();//大类型向小类型转换可能出现溢出问题
        System.out.println(b);
        double dd = i1.doubleValue();
        System.out.println(dd);

    }
}



